package highlighter.visitor;

import highlighter.ast.*;
import highlighter.ast.impl.*;

/**
 * 
 *  Abstract syntax tree visitor operations.  
 *
 */
public interface IASTVisitor {

	Object visit(Program p);

	Object visit(DeclareStmt s);	
	Object visit(AssignStmt s);
	Object visit(IfStmt s);
	Object visit(WhileStmt s);	
	
	Object visit(Body b);
    Object visit(Method method);
    Object visit(ParamList params);
    Object visit(Parameter param);
    
	Object visit(ArithmeticExpr exp);

	Object visit(Factor exp);

	Object visit(TermExpr exp);
	Object visit(TermNumber exp);
	Object visit(TermId exp);
	
	Object visit(RelationalExpr exp);
	
	Object visit(IntConst intConst);
	Object visit(Identifier identifier);

	Object visit(ClassDef classDef);

	Object visit(ClassBody classBody);

	Object visit(NamespaceDef namespaceDef);

	Object visit(NamespaceBody namespaceBody);

	Object visit(ReturnStmt returnStmt);

}